package com.mercury.base.enums.base;

import com.alibaba.fastjson.serializer.JSONSerializable;
import com.alibaba.fastjson.serializer.JSONSerializer;
import com.fasterxml.jackson.annotation.JsonValue;

import java.lang.reflect.Type;


/**
 * 出参枚举序列化指定code
 *
 * @author mercury
 */
public interface IEnum extends JSONSerializable {
    /**
     * 枚举code
     *
     * @return 序列化只返回这个字段的值
     */
    @JsonValue
    int getCode();


    /**
     * fastjson序列化
     *
     * @param serializer 序列化
     * @param fieldName  字段
     * @param fieldType  类型
     * @param features   特性
     */
    @Override
    default void write(JSONSerializer serializer, Object fieldName, Type fieldType, int features) {
        serializer.write(this.getCode());
    }


}
